A large-scale system receiving a large amount of access often employs a cluster structure for improving processing performance. Multiple servers for performing transaction processing are prepared in the cluster structure. Then, the multiple servers access a shared external database (hereinafter, referred to as a shared DB).
In the cluster structure, one of the servers locks a record in the shared DB for along time in some cases. Once the record has been locked, a server other than the one that has locked the record can no longer access the record. For this reason, when a server other than the one that has locked the record attempts to access the locked record, the server is made to wait and cannot proceed its own processing until the record is unlocked. Accordingly, there is a risk that the employing of the cluster system ends up with no improvement in performance of the system.
In addition, in a case where the server operates in a program execution environment such as a JAVA™ processing system, as in a case of a WebSphere Application Server™ (hereinafter, referred to as a WAS), housekeeping processing such as garbage collection (hereinafter, referred to as GC) is performed in the program execution environment. When the housekeeping processing is performed during the period of the lock of a record, the processing of the server that has locked the record is delayed, thus resulting in a situation where a single server keeps the lock for a long time.
Japanese Patent Application Publication No. 2007-086838 discloses means for reducing memory allocation for new object creation by reusing an object temporarily created at the time of communications and thereby for suppressing GC execution. However, as described, this means for suppressing GC execution is not one for suppressing the occurrence of GC during the lock of an external resource.
Japanese Patent Application Publication No. 2006-126975 discloses means for controlling GC by adjusting priorities of an original task and the task of GC. However, this means for controlling GC assumes that the original task and the task of GC can be executed in parallel. Accordingly, the delay in the processing time of the original task due to the execution of GC is not considered as a problem.
A system for preventing a situation where an external resource is locked for a long time by a single server is desirable.